package com.jay.springboot.starter.annotation;

import com.jay.springboot.starter.bootstrap.RpcConsumerBootstrap;
import com.jay.springboot.starter.bootstrap.RpcInitBootstrap;
import com.jay.springboot.starter.bootstrap.RpcProviderBootstrap;
import org.springframework.context.annotation.Import;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 启用 Rpc 注解
 * 该注解用于启动 Rpc 服务，包括初始化、提供和消费 Rpc 服务
 * 通过该注解，可以在 Spring Boot 应用中方便地集成和使用 Rpc 服务
 */
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Import({RpcInitBootstrap.class, RpcProviderBootstrap.class, RpcConsumerBootstrap.class})
public @interface EnableRpc {

    /**
     * 需要启动 server
     * 指示是否需要启动 Rpc 服务端，true 表示需要启动，false 表示不需要
     * 默认值为 true，即默认情况下会启动 Rpc 服务端
     *
     * @return boolean 默认值为 true
     */
    boolean needServer() default true;
}
